#!/bin/bash
set -xe
# -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations
gcc proxyclone-linux.c -o proxyclone-linux -lcurl -Wall -Wextra -pedantic -pedantic-errors -Wshadow -Wpointer-arith -Wcast-align -Wcast-qual -Wwrite-strings -Wconversion -Wsign-conversion   -Wredundant-decls -Wunused-parameter -Wunused-variable -Wuninitialized -Wimplicit-fallthrough -Wformat=2 -Wformat-security -Werror -O2 -fstack-protector-strong -fPIE -pie -D_FORTIFY_SOURCE=2 -z relro -z now

gcc get2sbdownload.c -o get2sbdownload -lcurl



# #!/bin/bash
# set -xe  # -x: 打印执行的命令；-e: 命令失败立即退出

# # 编译命令：启用所有安全检查、警告和标准合规性
# gcc proxyclone-linux.c \
#   -o proxyclone-linux \
#   -lcurl \
#   # 基础警告（全部启用）
#   -Wall \          # 启用所有常见警告
#   -Wextra \        # 启用额外警告（如未使用的参数、空循环等）
#   -pedantic \      # 严格遵循C标准（拒绝非标准语法）
#   -pedantic-errors \# 将pedantic警告视为错误
#   # 安全相关警告（关键）
#   -Wshadow \       # 警告变量阴影（如局部变量覆盖全局变量）
#   -Wpointer-arith \# 警告指针算术的不安全用法
#   -Wcast-align \   # 警告指针强制转换时的对齐问题
#   -Wcast-qual \    # 警告丢弃const/volatile属性的强制转换
#   -Wwrite-strings \# 警告字符串常量被当作可写指针
#   -Wconversion \   # 警告隐式类型转换（如int转char可能截断）
#   -Wsign-conversion \# 警告有符号/无符号类型的隐式转换
#   -Wstrict-prototypes \# 警告函数原型不严格（如未声明参数类型）
#   -Wmissing-prototypes \# 警告非静态函数缺少原型声明
#   -Wmissing-declarations \# 警告全局函数/变量缺少声明
#   -Wredundant-decls \# 警告重复的声明
#   -Wunused-parameter \# 警告未使用的函数参数
#   -Wunused-variable \# 警告未使用的变量
#   -Wuninitialized \# 警告未初始化的变量使用
#   # 代码质量警告
#   -Wimplicit-fallthrough \# 警告switch-case中无意的穿透（C11及以上）
#   -Wformat=2 \     # 严格检查printf/scanf等格式化函数（如类型不匹配）
#   -Wformat-security \# 警告格式化字符串安全漏洞（如printf(user_input)）
#   -Werror \        # 将所有警告视为错误（强制修复所有问题）
#   # 优化与安全编译选项
#   -O2 \            # 启用优化（同时会暴露更多潜在问题）
#   -fstack-protector-strong \# 启用栈保护（防止栈溢出攻击）
#   -fPIE -pie \     # 生成位置无关可执行文件（增强地址空间随机化ASLR）
#   -D_FORTIFY_SOURCE=2 \# 增强库函数安全检查（如strcpy->__strcpy_chk）
#   -z relro -z now  # 启用重定位只读（RELRO）和立即绑定（NOW），防止GOT覆盖
